如何使用OSQP

您所在的位置:网站首页 eigen 安装 如何使用OSQP

如何使用OSQP

2023-09-26 02:28| 来源: 网络整理| 查看: 265

更多的关于Eigen的学习参考 更多的关于OSQP的学习参考 我们在github上找到了使用eigen库封装起来的OSQP库,比原来的OSQP写代码时更好用一些。 我们对照mathworks对quadprog的例子解释对库的使用

一个标准的QP问题可以以如下的标准形式进行描述: 在这里插入图片描述 注意这里面的写法不同的书本有些不同的表达:H , f 有时候也被写成 P, q.

接下来给出几个典型的不同约束的二次规划形式: 1,具有线性约束的二次规划

在这里插入图片描述 matlab的调用方法是:

H = [1 -1; -1 2]; f = [-2; -6]; A = [1 1; -1 2; 2 1]; b = [2; 2; 3]; %调用 quadprog。 [x,fval,exitflag,output,lambda] = ... quadprog(H,f,A,b);

可以看到,这里的等式约束没有就可以不写,solver会,默认不去管它。 OSQP-Eigen库的c++调用是:

// 具有线性约束的二次规划 hessian.resize(2, 2); hessian.insert(0, 0) = 1; hessian.insert(1, 0) = -1; hessian.insert(0, 1) = -1; hessian.insert(1, 1) = 2; std::cout for (int j = 0; j for (int j = 0; j linearMatrix.insert(0, i) = pow(Te, i); } //the second row for (int i = 1; i linearMatrix.insert(2, i) = 0; } linearMatrix.insert(2, 0) = 0; linearMatrix.insert(2, 1) = 1; // the fourth row linearMatrix.insert(3, 0) = 0; linearMatrix.insert(3, 1) = 1; linearMatrix.insert(3, 2) = 2 * Te; linearMatrix.insert(3, 3) = 3 * Te * Te; linearMatrix.insert(3, 4) = 4 * Te * Te * Te; linearMatrix.insert(3, 5) = 5 * Te * Te * Te * Te; // the fifth row linearMatrix.insert(4, 0) = 0; linearMatrix.insert(4, 1) = 0; linearMatrix.insert(4, 2) = 2; linearMatrix.insert(4, 3) = 0; linearMatrix.insert(4, 4) = 0; linearMatrix.insert(4, 5) = 0; // the sixth row linearMatrix.insert(5, 0) = 0; linearMatrix.insert(5, 1) = 0; linearMatrix.insert(5, 2) = 2; linearMatrix.insert(5, 3) = 6 * Te; linearMatrix.insert(5, 4) = 12 * Te * Te; linearMatrix.insert(5, 5) = 20 * Te * Te * Te; std::cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3